﻿using System.Collections.Generic;
using Gp.Scripts.Data.Skills;
using Gp.Scripts.Equip;
using Gp.Scripts.Core;

namespace Gp.Scripts.Data {
    
    public abstract class  BaseWeaponSpecialtyEntityConfig : BaseSpecialtyEntityConfig { }


    public abstract class BaseWeaponSpecialty : BaseSpecialty {
        protected BaseWeaponSpecialty(BaseSpecialtyEntityConfig config) : base(config) { }
        public abstract WeaponTypeCode Code { get; }

        public virtual IEnumerable<WeaponAbilityEntity> WeaponAbility(WeaponEntity entity) {
            yield break;
        }


        public virtual IEnumerator<SkillTags> WeaponSkillTags() {
            yield break;   
        }
    }
    
    
    public abstract class BaseWeaponSpecialty<T> : BaseWeaponSpecialty where T : BaseSpecialtyEntityConfig {
        public BaseWeaponSpecialty(T config) : base(config) { }
        
        public T SData => EntityConfig as T;
        
    }
}